package models; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.*; import views.FrameStack; public class OPDept { private static OPDept instance; private TreeSet<Order> orders = new TreeSet<Order>(new MyComparator()); private BufferedReader br = null; private BufferedWriter bw = null; private OPDept() { pullOrdersFromFile(); } public static OPDept getInstance() { if (instance == null) { instance = new OPDept(); } return instance; } public void addOrder(Order order) { orders.add(order); pushOrdersToFile(); } public TreeSet<Order> getOrders() { return orders; } public void setOrders(TreeSet<Order> orders) { this.orders = orders; } public void pushOrdersToFile() { try { BufferedWriter bw = new BufferedWriter( new FileWriter("D:\\UT\\2nd year\\PT\\Lab\\HW2\\OrderManagement\\src\\models\\Orders")); for (Order o : orders) { String orderItems = ""; for (OrderItem oi : o.getOrderItems()) { orderItems = orderItems + oi.getProduct().getName() + " " + oi.getProduct().getPrice() + " " + oi.getQuantity() + " "; } bw.write(o.getID() + " " + o.getStatus().getTimeReceived() + " " + o.getStatus().getTimeProcessed() + " " + o.getStatus().getTimeDelivered() + " " + o.getStatus().getTimeFailed() + " " + orderItems + " "); bw.newLine(); } bw.close(); } catch (Exception e) { e.printStackTrace(); System.out.println("error" + e.getMessage()); } } public void pullOrdersFromFile() { int ID; long timeReceived; long timeProcessed; long timeDelivered; long timeFailed; String name; double price; int quantity; ArrayList<OrderItem> orderItems; try { br = new BufferedReader( new FileReader("D:\\UT\\2nd year\\PT\\Lab\\HW2\\OrderManagement\\src\\models\\Orders")); String line; while ((line = br.readLine()) != null) { StringTokenizer st = new StringTokenizer(line, " "); if (st.hasMoreTokens()) { ID = Integer.parseInt(st.nextToken()); timeReceived = Long.parseLong(st.nextToken()); timeProcessed = Long.parseLong(st.nextToken()); timeDelivered = Long.parseLong(st.nextToken()); timeFailed = Long.parseLong(st.nextToken()); orderItems = new ArrayList<OrderItem>(); while (st.hasMoreTokens()) { name = st.nextToken(); price = Double.parseDouble(st.nextToken()); quantity = Integer.parseInt(st.nextToken()); orderItems.add(new OrderItem(new Product(name, price), quantity)); } orders.add(new Order(ID, new Status(timeReceived, timeProcessed, timeDelivered, timeFailed), orderItems)); } } } catch (IOException e) { e.printStackTrace(); } finally { try { if (br != null) br.close(); } catch (IOException ex) { ex.printStackTrace(); } } } public class MyComparator implements Comparator<Order> { @Override public int compare(Order o1, Order o2) { return String.valueOf(o1.getStatus().getTimeReceived()) .compareTo(String.valueOf(o2.getStatus().getTimeReceived())); } } }